'use strict';

const Controller = require('egg').Controller;

class CartController extends Controller {
    async create() {
        const { ctx } = this;
        // 解析请求体参数
        const { gid } = ctx.request.body;
        // 添加的用户
        const { id } = ctx.user;
        // 添加购物车
        // 检查商品是否已在购物车中存在，如果存在，直接数量加 1
        const goods = await this.service.cart.find(gid, id);
        // 如果有商品，就把商品数量 +1
        if (goods) {
            await this.service.cart.update(gid, goods.num + 1, id);
            // 如果没有这个商品，就插入这个新的商品到购物车
        } else {
            await this.service.cart.create(gid, 1, id);
        }
        // 响应成功
        ctx.body = {
            code: 201,
            message: '添加成功',
        };
    }

    async index() {
        const { ctx } = this;
        const res = await this.service.cart.findAll(ctx.user.id);
        ctx.body = {
            code: 200,
            data: res,
            message: '请求列表成功',
        };
    }

    async update() {
        const { ctx } = this;
        const { gid, num } = ctx.request.body;
        await this.service.cart.update(gid, num, ctx.user.id);
        ctx.body = {
            code: 200,
            message: '修改成功',
        };
    }

    async remove() {
        const { ctx } = this;
        const { gid } = ctx.query;
        console.log(gid);
        await this.service.cart.remove(gid, ctx.user.id);
        ctx.body = {
            code: 204,
            message: '删除成功',
        };
    }
}

module.exports = CartController;
